﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GKS.DataTypes.AI.MissionariesAndCannibals {
    /// <summary>
    /// A class that simulates a Missionaries and Cannibals game situation.
    /// For more information regarding the Missionaries and Cannibals game visit: http://en.wikipedia.org/wiki/Missionaries_and_cannibals_problem
    /// </summary>
    public class MissionariesAndCannibals {
        #region properties
        public MissionariesAndCannibalsState InitialState { get; private set; }
        public MissionariesAndCannibalsState FinalState { get; private set; }
        public MissionariesAndCannibalsState CurrentState { get; private set; }
        public List<MissionariesAndCannibalsState> Transitions { get; private set; }
        //public Tree
        #endregion

        #region constructors
        private MissionariesAndCannibals(MissionariesAndCannibalsState initialState, MissionariesAndCannibalsState currentState, MissionariesAndCannibalsState finalState) {
            InitialState = initialState;
            FinalState = finalState;
            CurrentState = currentState;
            Transitions = new List<MissionariesAndCannibalsState>();
        }

        public MissionariesAndCannibals(MissionariesAndCannibalsState initialState, MissionariesAndCannibalsState finalState)
            : this(initialState, initialState, finalState) {
        }
        #endregion


    }
}
